#!/bin/bash

# Fat API 项目快速设置脚本
echo "=========================================="
echo "Fat API 项目初始化脚本"
echo "=========================================="

# 检查 PostgreSQL 是否安装
if ! command -v psql &> /dev/null; then
    echo "错误: 未找到 psql 命令，请先安装 PostgreSQL"
    exit 1
fi

# 检查 Java 是否安装
if ! command -v java &> /dev/null; then
    echo "错误: 未找到 java 命令，请先安装 Java 17+"
    exit 1
fi

# 检查 Maven 是否安装
if ! command -v mvn &> /dev/null; then
    echo "错误: 未找到 mvn 命令，请先安装 Maven"
    exit 1
fi

echo "1. 创建数据库..."
# 提示用户输入数据库连接信息
read -p "请输入 PostgreSQL 主机名 [localhost]: " PG_HOST
PG_HOST=${PG_HOST:-localhost}

read -p "请输入 PostgreSQL 端口 [5432]: " PG_PORT
PG_PORT=${PG_PORT:-5432}

read -p "请输入 PostgreSQL 用户名 [postgres]: " PG_USER
PG_USER=${PG_USER:-postgres}

read -s -p "请输入 PostgreSQL 密码: " PG_PASSWORD
echo

# 创建数据库
echo "正在创建数据库 fat_platform..."
PGPASSWORD=$PG_PASSWORD psql -h $PG_HOST -p $PG_PORT -U $PG_USER -c "CREATE DATABASE fat_platform;" 2>/dev/null

if [ $? -eq 0 ]; then
    echo "✓ 数据库创建成功"
else
    echo "⚠ 数据库可能已存在，跳过创建步骤"
fi

# 执行初始化脚本
echo "2. 执行数据库初始化脚本..."
PGPASSWORD=$PG_PASSWORD psql -h $PG_HOST -p $PG_PORT -U $PG_USER -d fat_platform -f src/main/resources/sql/init.sql

if [ $? -eq 0 ]; then
    echo "✓ 数据库初始化成功"
else
    echo "✗ 数据库初始化失败"
    exit 1
fi

# 更新配置文件
echo "3. 更新配置文件..."
CONFIG_FILE="src/main/resources/application.yml"

if [ -f "$CONFIG_FILE" ]; then
    # 备份原配置文件
    cp $CONFIG_FILE ${CONFIG_FILE}.backup
    
    # 替换数据库配置
    sed -i.tmp "s/localhost:5432/${PG_HOST}:${PG_PORT}/g" $CONFIG_FILE
    sed -i.tmp "s/username: postgres/username: ${PG_USER}/g" $CONFIG_FILE
    sed -i.tmp "s/password: 123456/password: ${PG_PASSWORD}/g" $CONFIG_FILE
    
    # 清理临时文件
    rm -f ${CONFIG_FILE}.tmp
    
    echo "✓ 配置文件更新成功"
else
    echo "⚠ 未找到配置文件，请手动配置数据库连接信息"
fi

# 编译项目
echo "4. 编译项目..."
mvn clean compile -q

if [ $? -eq 0 ]; then
    echo "✓ 项目编译成功"
else
    echo "✗ 项目编译失败"
    exit 1
fi

echo "=========================================="
echo "项目初始化完成！"
echo ""
echo "启动命令: mvn spring-boot:run"
echo "API 文档: http://localhost:8080/api/doc.html"
echo ""
echo "默认管理员账户:"
echo "用户名: admin"
echo "密码: 123456"
echo "=========================================="
